package com.example.designPattern.singleton;

import java.io.Serializable;

//线程安全 （静态内部类） 第五种也可以分开写了 变成两种针对  HungrySafeSingleton，HungrySafeStaticCodeBlockSingleton（只能算一种）
public class HungrySafeStaticSerializableSingleton implements Serializable {

    private static final long serialVersionUID = 4427729550984120529L;
    /**
     *类变量在类准备阶段就初始化了然后放在<clinit>构造方法中，
     *一旦外部调用了静态方法，那么就会初始化完成。
     */

    private static  HungrySafeStaticSerializableSingleton instance;
    private HungrySafeStaticSerializableSingleton(){}

    private static class SingletonHolder{
        private static HungrySafeStaticSerializableSingleton instance = new HungrySafeStaticSerializableSingleton();
    }
    public static HungrySafeStaticSerializableSingleton getInstance(){
        return SingletonHolder.instance;
    }

    public static Object readResolve(){
        return SingletonHolder.instance;
    }

}

